# def add(x, y):
#     return x + y
#
#
# print(add(3, 4))
#
# add = lambda x, y: x + y
# """
# x,y 代表的参数
# x+y 函数体内容
# """
# print(add(3, 4))



# 无参数
# sdds = lambda: print('我知道我很帅！')
# sdds()
#
# def sdds():
#     print('我知道我很帅！')
#
# sdds()


# # 一个参数
# fun1 = lambda x: x
# print(fun1('hello python'))  # 'hello python'  x

# # 默认参数 (缺省参数)
# fun2 = lambda a, b, c=100: a + b + c
# print(fun2(10,19,1000))


# # 可变参数之args
fun3 = lambda *args: args
print(fun3((1,2,3,4,5)))  # (1,2,3,4,5)作为一个整体传入进去的   (1,)

# # 可变参数之kwargs
# fun4 = lambda  **kwargs: kwargs
# print(fun4(name='yueyue',age=18,height='178cm'))

# # 带判断的lambda表达式

# asd = lambda x: x if (x > 10) else 10
# print(asd(11))
"""
lambda 参数:函数体返回的值 判断(可加可不加)
"""
# #### 它是以下带有def和return 关键字的普通函数的更简单版本：
# def fun(x):
#     if x > 10:
#         return x
#     else:
#         return 10
# print(fun(5))



# 列表中的字典排序
# 需求:假设我们需要对字典中的年龄进行排序
user_list = [
    {"name": 'zhangsan1', 'age': 18},
    {"name": 'lisi1', "age": 19},
    {"name": 'wangwu1', "age": 17}
]
for i in user_list:
    print(i)
# 排序函数 sort()  根据字典中对应键的值去进行排序
def age(element):  # 形参    实参为我们列表中每一个元素
    return element['age']

# 传递给key参数的是一个函数，它指定可迭代对象中的每一个元素来按照该函数进行排序
user_list.sort(key=age,reverse=True)  # 并不会改变原列表 可变的数据类型  内存不会发生变化
print(user_list) # 18 19  17
#
#
# # 我们需要使用匿名函数，使用sort函数中的key这个参数，来指定字典比大小的方法
# # reverse参数控制升序与降序排列
user_list.sort(key=lambda x:x['age'],reverse=True)
print(user_list)
"""如果说你要使用一个匿名函数 需要你熟练掌握自定义函数"""